/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package redinftel.formularios;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import redinftel.entidades.Idiomas;
import redinftel.entidades.InformacionAcademica;
import redinftel.entidades.InformacionLaboral;
import redinftel.entidades.Intereses;
import redinftel.entidades.Perfil;
import redinftel.entidades.Usuario;
import redinftel.sesiones.IdiomasFacadeRemote;
import redinftel.sesiones.InformacionAcademicaFacadeRemote;
import redinftel.sesiones.InformacionLaboralFacadeRemote;
import redinftel.sesiones.InteresesFacadeRemote;
import redinftel.sesiones.UsuarioFacadeRemote;

/**
 *
 * @author Curro
 */
@ManagedBean
@RequestScoped
public class InformacionBean {
    @EJB
    private UsuarioFacadeRemote usuarioFacade;
    @EJB
    private InformacionAcademicaFacadeRemote informacionAcademicaFacade;
    @EJB
    private InformacionLaboralFacadeRemote informacionLaboralFacade;
    @EJB
    private IdiomasFacadeRemote idiomasFacade;
    @EJB
    private InteresesFacadeRemote interesesFacade;


    private static final String USUARIO="usuario";

    private Perfil perfil;
    private Usuario usuario;
    private String fecha;
    private String anyoInicio="2010";
    private String mesInicio="01";
    private String anyoFin="2010";
    private String mesFin="01";

    public Usuario getUsuario() {
        FacesContext con = FacesContext.getCurrentInstance();
        String idPerfil = con.getExternalContext().getRequestParameterMap().get("idAmigo");

        usuario = usuarioFacade.find(new BigDecimal(idPerfil));
        perfil=usuario.getPerfil();

        if(perfil.getFechaNacimiento()==null)
        {
            fecha="";
        }else{
            SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            fecha=df.format(perfil.getFechaNacimiento());
        }

        nuevoAcademicos=new InformacionAcademica();
        nuevoLaborales=new InformacionLaboral();
        nuevoIdiomas=new Idiomas();
        nuevoIntereses=new Intereses();
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }



    private SelectItem[] mesLista={
        new SelectItem(1,"Ene"),
        new SelectItem(2,"Feb"),
        new SelectItem(3,"Mar"),
        new SelectItem(4,"Abr"),
        new SelectItem(5,"May"),
        new SelectItem(6,"Jun"),
        new SelectItem(7,"Jul"),
        new SelectItem(8,"Ago"),
        new SelectItem(9,"Sep"),
        new SelectItem(10,"Oct"),
        new SelectItem(11,"Nov"),
        new SelectItem(12,"Dic")

    };

    private SelectItem[] estadoCivilLista={
        new SelectItem("Soltero"),
        new SelectItem("Casado"),
        new SelectItem("Divorciado"),
        new SelectItem("Viudo")
    };


    private SelectItem[] sexoLista={
        new SelectItem("Hombre"),
        new SelectItem("Mujer")
    };


    public String getFecha() {
        return fecha;
    }

    public void setFecha(String fecha) {
        this.fecha = fecha;
    }

    public Perfil getPerfil() {
        return perfil;
    }

    public void setPerfil(Perfil perfil) {
        this.perfil = perfil;
    }

    public SelectItem[] getEstadoCivilLista() {
        return estadoCivilLista;
    }


    public SelectItem[] getSexoLista() {
        return sexoLista;
    }

    public String getAnyoFin() {
        return anyoFin;
    }

    public void setAnyoFin(String anyoFin) {
        this.anyoFin = anyoFin;
    }

    public String getAnyoInicio() {
        return anyoInicio;
    }

    public void setAnyoInicio(String anyoInicio) {
        this.anyoInicio = anyoInicio;
    }

     public SelectItem[] getAnyoLista()
    {
        SelectItem [] anyoLista=new SelectItem[100];
        for(int i=0;i<100;i++)
        {
            anyoLista[i]=new SelectItem(1920+i);
        }
        return anyoLista;
    }

    public String getMesFin() {
        return mesFin;
    }

    public void setMesFin(String mesFin) {
        this.mesFin = mesFin;
    }

    public String getMesInicio() {
        return mesInicio;
    }

    public void setMesInicio(String mesInicio) {
        this.mesInicio = mesInicio;
    }

    public SelectItem[] getMesLista() {
        return mesLista;
    }

    public void setMesLista(SelectItem[] mesLista) {
        this.mesLista = mesLista;
    }


    /** Creates a new instance of ModificarBean */
    public InformacionBean() {
          ChangeLocaleBean.cambiar();
    }

    public String doModificarPersonales()
    {

        FacesContext con= FacesContext.getCurrentInstance();
        fecha=con.getExternalContext().getRequestParameterMap().get("datepicker");
        SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        try {
            Date parse = df.parse(fecha);
            perfil.setFechaNacimiento(parse);
        } catch (ParseException ex) {
            Logger.getLogger(ModificarBean.class.getName()).log(Level.SEVERE, null, ex);
        }


        usuarioFacade.edit(usuario);
        return "modificar";
    }

//****************************************************************************************************
    //GESTION DE DATOS ACADEMICOS
    InformacionAcademica nuevoAcademicos;

    public InformacionAcademica getNuevoAcademicos() {
        return nuevoAcademicos;
    }

    public void setNuevoAcademicos(InformacionAcademica nuevoAcademicos) {
        this.nuevoAcademicos = nuevoAcademicos;
    }

    public String doModificarAcademicos()
    {

        for(InformacionAcademica ia : perfil.getInformacionAcademicaCollection())
        {
            informacionAcademicaFacade.edit(ia);
        }
        return "modificar";
    }

    public String doEliminarAcademicos()
    {

        FacesContext con= FacesContext.getCurrentInstance();
        try{
        int id=Integer.parseInt(con.getExternalContext().getRequestParameterMap().get("linea"));
        InformacionAcademica ia = informacionAcademicaFacade.find(new BigDecimal(id));
        informacionAcademicaFacade.remove(ia);
        perfil.getInformacionAcademicaCollection().remove(ia);
        }catch(Exception e){//No se ha seleccionado nada
        }
        return "modificar";
    }
    public String nuevoAcademico()
    {
        SimpleDateFormat df = new SimpleDateFormat("MM/yyyy");
        try {
            nuevoAcademicos.setFechaInicio(df.parse(mesInicio + "/" + anyoFin));
            nuevoAcademicos.setFechaFin(df.parse(mesFin + "/" + anyoInicio));
        } catch (ParseException ex) {
            Logger.getLogger(ModificarBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        nuevoAcademicos.setIdAcademica(informacionAcademicaFacade.findPK());
        nuevoAcademicos.setPerfil(perfil);
        perfil.getInformacionAcademicaCollection().add(nuevoAcademicos);
        informacionAcademicaFacade.create(nuevoAcademicos);
        //Limpiar
        nuevoAcademicos = new InformacionAcademica();
        nuevoAcademicos.setCentro("");
        nuevoAcademicos.setCiudad("");
        nuevoAcademicos.setDescripcion("");
        mesInicio="01";
        mesFin="01";
        anyoInicio="2010";
        anyoFin="2010";

        return "modificar";
    }

//****************************************************************************************************
        //GESTION DE INFORMACION LABORAL
    InformacionLaboral nuevoLaborales;

    public InformacionLaboral getNuevoLaborales() {
        return nuevoLaborales;
    }

    public void setNuevoLaborales(InformacionLaboral nuevoLaborales) {
        this.nuevoLaborales = nuevoLaborales;
    }

     public String doModificarLaborales()
    {

        for(InformacionLaboral il : perfil.getInformacionLaboralCollection())
        {
            informacionLaboralFacade.edit(il);
        }
        return "modificar";
    }

       public String doEliminarLaborales()
    {
        try{
        FacesContext con= FacesContext.getCurrentInstance();
        int id=Integer.parseInt(con.getExternalContext().getRequestParameterMap().get("linea"));
        InformacionLaboral ia = informacionLaboralFacade.find(new BigDecimal(id));
        informacionLaboralFacade.remove(ia);
        perfil.getInformacionLaboralCollection().remove(ia);
        }catch(Exception e){//No se ha seleccionado nada
        }
        return "modificar";
    }

    public String nuevoLaboral()
    {

        SimpleDateFormat df = new SimpleDateFormat("MM/yyyy");
        try {
            nuevoLaborales.setFechaInicio(df.parse(mesInicio + "/" + anyoFin));
            nuevoLaborales.setFechaFin(df.parse(mesFin + "/" + anyoInicio));
        } catch (ParseException ex) {
            Logger.getLogger(ModificarBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        nuevoLaborales.setIdLaboral(informacionLaboralFacade.findPK());
        nuevoLaborales.setIdUsuario(perfil);
        perfil.getInformacionLaboralCollection().add(nuevoLaborales);
        informacionLaboralFacade.create(nuevoLaborales);
        //Vaciar Campos
        nuevoLaborales = new InformacionLaboral();
        nuevoLaborales.setCiudad("");
        nuevoLaborales.setEmpresa("");
        mesInicio="01";
        mesFin="01";
        anyoInicio="2010";
        anyoFin="2010";
        return "modificar";
    }

//****************************************************************************************************
    //GESTIONAR IDIOMAS
    Idiomas nuevoIdiomas;

    public Idiomas getNuevoIdiomas() {
        return nuevoIdiomas;
    }

    public void setNuevoIdiomas(Idiomas nuevoIdiomas) {
        this.nuevoIdiomas = nuevoIdiomas;
    }

     public String doModificarIdiomas()
    {

        for(Idiomas il : perfil.getIdiomasCollection())
        {
            idiomasFacade.edit(il);
        }
        return "modificar";
    }

       public String doEliminarIdiomas()
    {
        try{
        FacesContext con= FacesContext.getCurrentInstance();
        int id=Integer.parseInt(con.getExternalContext().getRequestParameterMap().get("linea"));
        Idiomas ia = idiomasFacade.find(new BigDecimal(id));
        idiomasFacade.remove(ia);
        perfil.getIdiomasCollection().remove(ia);
        }catch(Exception e){//No se ha seleccionado nada
        }

        return "modificar";
    }

    public String nuevoIdioma()
    {
        nuevoIdiomas.setIdIdiomas(idiomasFacade.findPK());
        nuevoIdiomas.setIdUsuario(perfil);
        perfil.getIdiomasCollection().add(nuevoIdiomas);
        idiomasFacade.create(nuevoIdiomas);
        nuevoIdiomas=new Idiomas();
        nuevoIdiomas.setNombreIdioma("");
        return "modificar";
    }
//****************************************************************************************************
    //GESTIONAR INTERESES
    Intereses nuevoIntereses;

    public Intereses getNuevoIntereses() {
        return nuevoIntereses;
    }

    public void setNuevoIntereses(Intereses nuevoIntereses) {
        this.nuevoIntereses = nuevoIntereses;
    }

     public String doModificarIntereses()
    {

        for(Intereses il : perfil.getInteresesCollection())
        {
            interesesFacade.edit(il);
        }
        return "modificar";
    }

       public String doEliminarIntereses()
    {
        try{
        FacesContext con= FacesContext.getCurrentInstance();
        int id=Integer.parseInt(con.getExternalContext().getRequestParameterMap().get("linea"));
        Intereses ia = interesesFacade.find(new BigDecimal(id));
        interesesFacade.remove(ia);
        perfil.getInteresesCollection().remove(ia);
        }catch(Exception e){//No se ha seleccionado nada
        }
        return "modificar";
    }

    public String nuevoInteres()
    {
        nuevoIntereses.setIdIntereses(interesesFacade.findPK());
        nuevoIntereses.setIdUsuario(perfil);
        perfil.getInteresesCollection().add(nuevoIntereses);
        interesesFacade.create(nuevoIntereses);
        nuevoIntereses=new Intereses();
        nuevoIntereses.setDescripcion("");
        return "modificar";
    }
}
